package com.zyb.lmbackend.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zyb.lmbackend.entity.ClassifyTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 分类任务表 Mapper：提供基本 CRUD 与版本/锁相关的辅助查询。
 */
@Mapper
public interface ClassifyTaskMapper extends BaseMapper<ClassifyTask> {

    @Select("/* 查询当前已存在的最大任务版本号 */ SELECT COALESCE(MAX(version),0) FROM classify_task")
    int selectMaxVersion();
//    GET_LOCK(name, timeout) 是 MySQL 自带的“命名互斥锁”API（连接级别、服务器范围）
    @Select("/* 尝试获取 MySQL 命名锁，超时 0 秒 */ SELECT GET_LOCK(#{name}, 0)")
    Integer getLock(@Param("name") String name);

    @Select("/* 释放 MySQL 命名锁 */ SELECT RELEASE_LOCK(#{name})")
    Integer releaseLock(@Param("name") String name);

    @Select("/* 列出已有的任务版本（去重降序） */ SELECT DISTINCT version FROM classify_task ORDER BY version DESC")
    java.util.List<Integer> selectAllVersions();
}
